/*
Driver.java
Fecha: 07 de julio de 2011
Autor: Claudia Grajeda
Descripcion: radio, hoja de trabajo 1.
*/


import java.util.Scanner;
import java.util.InputMismatchException;

/**
 * @author Claudia
 *
 */
public class Driver{
	public static void main(String[] args){
	
	//Declaracion de objetos
	Scanner datos = new Scanner(System.in);
	//Radio mi_radio;
	
	
	//variables
	int opcion, numero;
	boolean estado = false;
	
	
	System.out.println("\n    RAdio!! :O)\n");
	//crear objeto
	NuestraInterfaz mi_radio = new Radio();
	
	//menu 
	
	do{
            menu();
            //-----------------------------------------------------
            opcion = (int)obtenerNumero("Ingrese su opcion: ", false);
            if (opcion < 0)
                opcion = 0;
            //-----------------------------------------------------
            switch(opcion){
                case 1://encender apagar
					estado = mi_radio.power();
					if (estado){
						System.out.println("\nEl radio se a encendido\n");
						System.out.println(mi_radio.toString());
					}
					else
						System.out.println("\nEl radio se a apagado\n");
                    break;
					
				case 2: // AM/FM
					if (estado){
						mi_radio.cambio();
						System.out.println(mi_radio.toString());
					}
					else
						System.out.println("\nEl radio esta apagado, debe de encenderlo para usar esta funcion\n");
					break;
					
				case 3: //siguiente estacion
					if (estado){
						mi_radio.fw();
						System.out.println(mi_radio.toString());
					}
					else
						System.out.println("\nEl radio esta apagado, debe de encenderlo para usar esta funcion\n");
					break;
					
				case 4: // estacion anterior
					if(estado){
						mi_radio.bw();
						System.out.println(mi_radio.toString());
					}
					else
						System.out.println("\nEl radio esta apagado, debe de encenderlo para usar esta funcion\n");
                    break;
					
				case 5: //guardar estacion
					if (estado){
						System.out.println("\nEN QUE MEMORIA (1-12) DESEA GUARDAR LA ESTACION ACTUAL?: ");
						numero = datos.nextInt();
						datos.nextLine();
						if (numero <=12 && numero >= 1 ){
							mi_radio.store(numero);
							System.out.println(mi_radio.toString());
						}
						else{
							System.out.println("\nUsted solo cuenta con 12 memorias.");
							System.out.println("Elija una opcion del menu \n");
						}
					}	
					else
						System.out.println("\nEl radio esta apagado, debe de encenderlo para usar esta funcion\n");
					
					break;
					
				case 6: //SELECCIONAR MEMORIA
					if (estado){
						System.out.println("\nMEMORIA (1-12) QUE DESEA ESCUCHAR: ");
						numero = datos.nextInt();
						datos.nextLine();
						if (numero <=12 && numero >= 1 ){
							
							mi_radio.select(numero);
							System.out.println(mi_radio.toString());
						}
						else{
							System.out.println("\nUsted solo cuenta con 12 memorias.");
							System.out.println("Elija una opcion del menu \n");
						}
					}
					else
						System.out.println("\nEl radio esta apagado, debe de encenderlo para usar esta funcion\n");
					break;			
					
				case 7://Salir del programa
                    mi_radio.salir();
                    break;
					
				default:
                    System.out.println("\nERROR: ~~> Opcion invalida. :O(\n");            
            }
        }while(opcion!=7);
    }
	
	public static void menu(){
		System.out.println();
        System.out.println("+--    MENU DE OPCIONES    --+");
        System.out.println("| 1. ENCENDER/APAGAR         |");
		System.out.println("| 2. CAMBIAR EMISORA         |");
        System.out.println("| 3. SIGUIENTE ESTACION      |");
        System.out.println("| 4. ESTACION ANTERIOR       |");
		System.out.println("| 5. GRABAR ESTACION         |");
		System.out.println("| 6. SELECCIONAR MEMORIA     |");
        System.out.println("| 7. SALIR DEL PROGRAMA      |");
        System.out.println("+----------------------------+");
	}
	
	
	
	
	public static double obtenerNumero(String mensaje, boolean mostrar){
		Scanner ingreso = new Scanner(System.in);
		double num = -1;
			
		System.out.print(mensaje);
		try{
			num = ingreso.nextDouble();
		}
		catch(InputMismatchException exception){
			if (mostrar)
				System.out.println("\nERROR: ~~> Dato invalido. :O(\n");
		}
		finally{
			ingreso.nextLine();//Atrapar el ENTER
		}
		return num;
	}
}
	
	